﻿using Prism.Commands;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace PrismRegionNavigation.ViewModels
{
    /// <summary>
    /// 如果发现对应的ViewModel自动匹配不上：1、检查对应的类型名称是否符合要求；2、检查自动匹配的ViewModel是否有无法注入的对象
    /// </summary>
    public class MainWindowViewModel
    {
        public ICommand OpenViewCommand { get; set; }

        /// <summary>
        /// 区域管理
        /// </summary>
        IRegionManager _regionManager;

        //区域管理  需要拿到RegionManager
        public MainWindowViewModel(IRegionManager regionManager)
        {
            _regionManager = regionManager;
            OpenViewCommand = new DelegateCommand<string>(OpenView);
        }

        private void OpenView(string viewName)
        {
            // 这里可以根据obj参数来打开对应的View
            //_regionManager.RegisterViewWithRegion("ContentRegion", viewName);

            //打开/显示某个View的时候，希望给这个View传递参数
            //上面的方法没法传参数  不予使用

            if (viewName == "ViewA")
            {
                //向某个View中传递特定参数  参数对接到View的ViewModel中
                _regionManager.RequestNavigate("ContentRegion", viewName, new NavigationParameters() { { "parameter1", "value1" }, { "parameter2", "value2" } });
            }
            else if (viewName == "ViewB")
            {
                _regionManager.RequestNavigate("ContentRegion", viewName);
            }
            else if (viewName == "ViewC")
            {
                _regionManager.RequestNavigate("ContentRegion", viewName);
            }
        }
    }
}
